home *** CD-ROM | disk | FTP | other *** search
/ Workbench Add-On / Workbench Add-On - Volume 1.iso / BBS-Archive / Dev / gcc263-src.lha / gcc-2.6.3 / config / i386 / aix386ng.h < prev    next >
C/C++ Source or Header  |  1993-10-02  |  4KB  |  143 lines

  1. /* Definitions for IBM PS2 running AIX/386.
  2.    From: Minh Tran-Le <TRANLE@intellicorp.com>
  3.    Copyright (C) 1988 Free Software Foundation, Inc.
  4.  
  5. This file is part of GNU CC.
  6.  
  7. GNU CC is free software; you can redistribute it and/or modify
  8. it under the terms of the GNU General Public License as published by
  9. the Free Software Foundation; either version 2, or (at your option)
  10. any later version.
  11.  
  12. GNU CC is distributed in the hope that it will be useful,
  13. but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15. GNU General Public License for more details.
  16.  
  17. You should have received a copy of the GNU General Public License
  18. along with GNU CC; see the file COPYING.  If not, write to
  19. the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  20.  
  21.  
  22. #include "i386/i386.h"
  23.  
  24. /* Get the generic definitions for system V.3.  */
  25.  
  26. #include "svr3.h"
  27.  
  28. /* Use the ATT assembler syntax.
  29.    This overrides at least one macro (ASM_OUTPUT_LABELREF) from svr3.h.  */
  30.  
  31. #include "i386/att.h"
  32.  
  33. /* Use crt1.o as a startup file and crtn.o as a closing file.  */
  34.  
  35. #define STARTFILE_SPEC "%{pg:gcrt0.o%s}%{!pg:%{p:mcrt1.o%s}%{!p:crt1.o%s}}"
  36. #define ENDFILE_SPEC   "crtn.o%s"
  37.  
  38. #define LIB_SPEC "%{shlib:-lc_s} -lc"
  39.  
  40. /* Special flags for the linker.  I don't know what they do.  */
  41.  
  42. #define LINK_SPEC "%{K} %{!K:-K} %{T*} %{z:-lm}"
  43.  
  44. /* Specify predefined symbols in preprocessor.  */
  45.  
  46. #define CPP_PREDEFINES "-Dps2 -Dunix -Di386 -Asystem(unix) -Asystem(aix) -Acpu(i386) -Amachine(i386)"
  47.  
  48. #define CPP_SPEC \
  49.   "%{posix:-D_POSIX_SOURCE}%{!posix:-DAIX} -D_I386 -D_AIX -D_MBCS"
  50.  
  51. /* special flags for the aix assembler to generate the short form for all
  52.    qualifying forward reference */
  53. /* The buggy /bin/as of aix ps/2 1.2.x cannot always handle it.    */
  54. #if 0
  55. #define ASM_SPEC "-s2"
  56. #endif /* 0 */
  57.  
  58. #undef ASM_FILE_START
  59. #define ASM_FILE_START(FILE)                     \
  60.   do { fprintf (FILE, "\t.file\t");                \
  61.        output_quoted_string (FILE, dump_base_name);        \
  62.        fprintf (FILE, "\n");                    \
  63.        if (optimize)                        \
  64.           ASM_FILE_START_1 (FILE);                 \
  65.        else                            \
  66.           fprintf (FILE, "\t.noopt\n");                \
  67.      } while (0)
  68.  
  69. /* This was suggested, but it shouldn't be right for DBX output. -- RMS
  70.    #define ASM_OUTPUT_SOURCE_FILENAME(FILE, NAME) */
  71.  
  72. /* Writing `int' for a bitfield forces int alignment for the structure.  */
  73.  
  74. #define PCC_BITFIELD_TYPE_MATTERS 1
  75.  
  76. #ifndef USE_GAS
  77. /* Don't write a `.optim' pseudo; this assembler
  78.    is said to have a bug when .optim is used.  */
  79.  
  80. #undef ASM_FILE_START_1
  81. #define ASM_FILE_START_1(FILE) fprintf (FILE, "\t.noopt\n")
  82. #endif
  83.  
  84. /* Output assembler code to FILE to increment profiler label # LABELNO
  85.    for profiling a function entry.  */
  86.  
  87. #undef FUNCTION_PROFILER
  88. #define FUNCTION_PROFILER(FILE, LABELNO)  \
  89.    fprintf (FILE, "\tleal %sP%d,%%eax\n\tcall mcount\n", LPREFIX, (LABELNO));
  90.  
  91. /* Note that using bss_section here caused errors
  92.    in building shared libraries on system V.3.
  93.    but AIX 1.2 does not have yet shareable libraries on PS2 */
  94. #undef ASM_OUTPUT_LOCAL
  95. #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)  \
  96.   (bss_section (),                    \
  97.    ASM_OUTPUT_LABEL ((FILE), (NAME)),            \
  98.    fprintf ((FILE), "\t.set .,.+%u\n", (ROUNDED)))
  99.  
  100.  
  101. /* Undef all the .init and .fini section stuff if we are not using gas and
  102.  * gnu ld so that we can use collect because the standard /bin/as and /bin/ld
  103.  * cannot handle those.
  104.  */
  105. #ifndef USE_GAS
  106. # undef INIT_SECTION_ASM_OP
  107. # undef FINI_SECTION_ASM_OP
  108. # undef CTORS_SECTION_ASM_OP
  109. # undef DTORS_SECTION_ASM_OP
  110. # undef ASM_OUTPUT_CONSTRUCTOR
  111. # undef ASM_OUTPUT_DESTRUCTOR
  112. # undef DO_GLOBAL_CTORS_BODY
  113.  
  114. # undef CTOR_LIST_BEGIN
  115. # define CTOR_LIST_BEGIN
  116. # undef CTOR_LIST_END
  117. # define CTOR_LIST_END
  118. # undef DTOR_LIST_BEGIN
  119. # define DTOR_LIST_BEGIN
  120. # undef DTOR_LIST_END
  121. # define DTOR_LIST_END
  122.  
  123. # undef CONST_SECTION_FUNCTION
  124. # define CONST_SECTION_FUNCTION                        \
  125. void                                    \
  126. const_section ()                            \
  127. {                                    \
  128.   extern void text_section();                        \
  129.   text_section();                            \
  130. }
  131.  
  132. # undef EXTRA_SECTION_FUNCTIONS
  133. # define EXTRA_SECTION_FUNCTIONS                \
  134.   CONST_SECTION_FUNCTION                    \
  135.   BSS_SECTION_FUNCTION
  136.  
  137. /* for collect2 */
  138. # define OBJECT_FORMAT_COFF
  139. # define MY_ISCOFF(magic) \
  140.   ((magic) == I386MAGIC || (magic) == I386SVMAGIC)
  141.  
  142. #endif /* !USE_GAS */
  143.